<?php
define('CRPROJEK','crm_projekty');	

require_once 'Panel/UsersModel.php';
require_once 'CrmModel.php';
/**
 * CRM
 * 
 * @author kowal.sylwester
 *
 */
class CrmController extends CrmModel{
	protected $userID; // numer uzytkownika
	protected $folder; // folder publiczny
	protected $akcja; // zadanie do wykoania przez clasę sklep
	protected $folderTpl;
	protected $vars;
	protected $db;
	
	/**
	 * Konstruktor klasy KatalogTAController
	 * 
	 * definiujemy folder publiczny
	 * instalujemy bazę
	 * 
	 * @param $opc - parametry przekazane z constans.php
	 */
	function __construct($opc=null){
		global $parameters,$config,$dispatcher,$settings, $objSession;
	
		// sciezka do plikow tpl
		// jesli zamieszczono pliki tpl dla Katalogu w theme to je wczytuj
		// jesli nie to domyslne pliki z view/KatalogTA
		$this->FolderTpl = (tools::_dir_exists("Crm","../application/theme/theme_{$settings['szablon']}/{$settings['ramka_theme']}_{$settings['ramka_theme_kolor']}")) ? "theme_{$settings['szablon']}/{$settings['ramka_theme']}_{$settings['ramka_theme_kolor']}/Crm/" : "Crm/";
		
		$this->folder  = "../public/users/".str_replace('www.','',$_SERVER['HTTP_HOST'])."/Crm/";
		tools::_add_folder($this->folder);
		// sciezka do bazy
		tools::_add_folder($parameters['crm']['host']);
		$baza = str_replace('www.','',$_SERVER['HTTP_HOST']).".db";
		// instalacja bazy
		$this->db = CrmController::installDB();
		
		// akcja domyślna
		$this->akcja = null;
		// ustawienia
		//$this->ustawienia = $this->pobiezUstawienia();
		//tools::_assign("settings_crm",$this->ustawienia);
		
		// zmienne z url dla metod wykonywanych z url
		$this->vars = (is_string($config->parameters)) ? explode(',',$config->parameters) : array();

	}
	
	
	/**
	 * okreslenie akcji do wykonania i zapisanie parametrów wykoanaia
	 * @param $akcja_
	 * @return unknown_type
	 */
	public function indexAction($akcja_=null){
		global $config;
		if(is_null($this->akcja) && !is_null($akcja_)) { 
			$this->akcja = $akcja_;
			return;			
		}else {
			$this->vars = (is_string($config->parameters)) ? explode(',',$config->parameters) : array();
			
			if(is_null($this->akcja)) $this->akcja = $this->vars[1];
			
			$this->wykoanjZadanie();
		}		
	}
	
	/**
	 * główna metoda rozdzielająca zadania
	 * @return unknown_type
	 */
	private function wykoanjZadanie(){
		global $config, $objSession,$dispatcher;
	
		tools::_display("{$this->FolderTpl}css.tpl");
		
		
		switch($this->akcja){
			case 'ustawienia':
				if ( !$objSession->IsLoggedIn() && $objSession->GetUserData("stanowisko") != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar("toolbar__ustawienia_main");
				echo "ustawienia main page";
				break;
				
			case 'add':
				if ( !$objSession->IsLoggedIn() && $objSession->GetUserData("stanowisko") != 'a') { tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar("toolbar__add_main");
				echo "dodaj plik";
				break;
				
			case 'employees':
				$this->adminEmployeesList();
				break;
				
			case 'clients':
				$this->adminUsersList();
				break;
				
			case 'projects':
				$this->adminProjectsList();
				break;

			case 'products':
				$this->adminProductsList();
				break;
				
			case 'documents':
				$this->adminDocumentsList();
				break;	

			case 'calendar':
				$this->adminCalendarList();
				break;				
							
			default:
				if ( !$objSession->IsLoggedIn()){ 
					tools::_redirect('zaloguj_sie.html','',0,'php'); return;
				}else{	
					if($objSession->GetUserData("stanowisko") == 'a') $this->adminMainPage();			
					else if($objSession->GetUserData("stanowisko") == 'p') $this->emplMainPage();
					else $this->userMainPage();
				}
				
				break;
		}
		//print_r($this->vars);
	}
	
	private function adminMainPage(){
		$this->toolbar("toolbar__admin_main");
		tools::_display("{$this->FolderTpl}admin_main_page.tpl");
	}
	
	private function userMainPage(){
		$this->toolbar("toolbar__user_main");
		$this->adminUsersList();
	}	

	private function emplMainPage(){
		$this->toolbar("toolbar__empl_main");
		$this->adminEmployeesList();
	}
	
	private function adminEmployeesList(){
		$users = UsersModel::get_registred_users_list("'a','p'",$this->vars[2]);
		tools::_assign('users',$users);
		tools::_display("{$this->FolderTpl}admin_empl_page.tpl");
	}

	private function adminUsersList(){
		$users = UsersModel::get_registred_users_list("'u'",$this->vars[2]);
		tools::_assign('users',$users);
		tools::_display("{$this->FolderTpl}admin_users_page.tpl");
	}
	
	private function adminProjectsList(){
		$projects = CrmModel::getProjectsList("'all'");
		tools::_assign('projects',$projects);
		tools::_display("{$this->FolderTpl}admin_proje_page.tpl");		
	}
	
	private function adminProductsList(){
		//$products = CrmModel::getProductsList("'active'");
		tools::_assign('products',$products);
		tools::_display("{$this->FolderTpl}admin_produ_page.tpl");		
	}
	
	private function adminDocumentsList(){
		//$products = CrmModel::getDocumentsList("'active'");
		tools::_assign('documents',$documents);
		tools::_display("{$this->FolderTpl}admin_docum_page.tpl");			
	}
	
	private function adminCalendarList(){
		//$calendar = CrmModel::getCalendarList("'active'");
		tools::_assign('calendar',$calendar);
		tools::_display("{$this->FolderTpl}admin_calen_page.tpl");				
	}
	
	/**
	 * instalacja bazy dla CRM
	 * @return obiekt bazy
	 */
	private static function installDB(){
		global $parameters;
		$nazwa_bazy__ = str_replace('www.','',$_SERVER['HTTP_HOST']).".db";
		// przygotowanie parametrów do zalozenia bazy 
		// UWAGA baza SQLITE 3
		$parametryBazy= array('drivers'=>array('driver'=>'sqlite3'),
							  'sqlite'=>array('host'=>$parameters['crm']['host'],
											  'database'=>$nazwa_bazy__ ));
		$db = config::getDB($parametryBazy);
		
		$parameters['sqlite']['host'] = $parameters['crm']['host'];
		$parameters['drivers']['dbinstall'] = $parameters['crm']['dbinstall'];
		config::_instal_database($parameters['drivers']['driver'],$db);
		
		return $db;
	}
	
	
	/**
	 * Generuje pasek toolbar
	 * @param $tool__
	 * @return unknown_type
	 */
	private function toolbar($tool__){
		global $objSession;
		$tollsIcons = $this->przygotujToolBar($tool__);
		tools::_assign("toolbar_links",$tollsIcons);		
		if ( $objSession->IsLoggedIn() && $objSession->GetUserData("stanowisko") == 'a') 
		tools::_display("{$this->FolderTpl}toolbar.tpl");
	}
	
	
	/**
	 * ustawienia paska przyciskow dla CRM
	 * @param unknown_type $tool__
	 * @return unknown_type
	 */
	private function przygotujToolBar($tool__){
		global $config;
		switch($tool__){
			case'toolbar__admin_main':		
				$toolbar = array(',Crm,ustawienia'=>array('nazwa'=>$config->__cl["tool_ustawienia_crm"],'ikona'=>'16_ustawienia.png'));
				$toolbar[",Crm,add,{$this->tacID}"] = array('nazwa'=>$config->__cl["tool_dodaj_nowy_plik"],'ikona'=>'16_produkt_add.png');
				break;
				
			case'toolbar__user_main':		
				break;				
		}
		return $toolbar;
	}
	
}

